// var nQuery = function(selector, context){
//     console.log("1")
// }   //第一步，先创建这样的实例，即可用$()方法调用函数

// var nQuery = function (selector, context) {
//     function init(selector, context) {
//         console.log("init")
//     }

//     return {
//         init: init
//     }
// }   //这样即可调用方法，但是太繁琐，并且方法是公共的

// var nQuery = function(selector, context){
//     return nQuery.prototype
// }

// nQuery.prototype = {
//     init: function(selector, context){
//         console.log("初始化")
//     },
//     fn: function(selector, context){
//         console.log("我是fn方法")
//     }
// }   //第三步，类似第二步，也在原形上增加方法，但是这样做对象依然是公用的



// //先创建一个nQuery对象
// var nQuery = function(selector, context){
//     //每次执行这个函数都会创建一个新的对象并且返回新对象init的this
//     return new nQuery.prototype.init(selector, context)
// }

// nQuery.prototype = {
//     init: function(selector, context){
//         return this
//     },
//     fn: function(){
//         console.log("我是一个静态方法")
//     }
// }

// //把init的原型绑定到nQuery上，这样就可以方便的调用nQuery的方法了
// nQuery.prototype.init.prototype = nQuery.prototype



var nQuery = function (selector, context) {
    return new nQuery.prototype.init(selector, context)
}

nQuery.prototype = {
    constructor: nQuery,
    init: function (selector, context) {
        this.selector = selector
        this.context = context
    }
}

nQuery.prototype.init.prototype = nQuery.prototype

nQuery.extent = nQuery.prototype.extent = function (obj) {
    for (var key in obj) {
        this[key] = obj[key]
    }
}

nQuery.extent({
    isArray: Array.isArray,
    ajax: function () {
        console.log("ajax")
    }
})

nQuery.prototype.extent({
    addClass: function () {
        console.log("addClass...")
    },
    sayHello: function () {
        console.log("hello")
    }
})


// //学习jquery用$符和nQuery直接引用nQuery
window.nQuery = window.$ = nQuery